package com.ch.engine.daily.abstractTest;

/**
 * 支付宝支付 - 继承抽象类并实现接口
 * 展示：类可以同时继承抽象类和实现多个接口
 *
 * @author wangchunhui
 * @date 2025/8/6 17:40
 */
public class AliPay extends AbstractPaymentProcessor implements PaymentInterface, NotificationInterface {
    
    public AliPay() {
        super("支付宝", 0.006); // 0.6%手续费
    }
    
    // 实现抽象类的抽象方法
    @Override
    protected boolean doPayment(double amount) {
        System.out.println("连接支付宝服务器...");
        System.out.println("支付宝支付完成");
        return true;
    }
    
    // 实现PaymentInterface接口
    @Override
    public boolean processPayment(double amount) {
        validateAmount(amount); // 使用接口默认方法
        return executePayment(amount);
    }
    
    // 实现NotificationInterface接口
    @Override
    public void sendNotification(String message) {
        System.out.println("支付宝通知：" + message);
    }
    
    // 重写钩子方法
    @Override
    protected void afterPaymentSuccess(double amount) {
        sendSuccessNotification(amount);
        System.out.println("支付宝积分 +" + (int)(amount / 10));
    }
    
    // 重写验证逻辑
    @Override
    protected boolean validatePayment(double amount) {
        if (!super.validatePayment(amount)) {
            return false;
        }
        if (amount > 50000) {
            System.out.println("支付宝单笔支付不能超过50000元");
            return false;
        }
        return true;
    }
}
